2 Introduction
Due to restrictions in the Emacs Lisp language, CLOS cannot be
completely supported, and a few functions have been added in
place of setf.
EIEIO supports the following features:
- A structured framework for the creation of basic classes
with attributes and methods using singular inheritance similar
to CLOS.
- Type checking, and slot unbinding.
- Method definitions similar to CLOS.
- Simple and complex class browsers.
- Edebug support for methods.
- Imenu updates.
- Byte compilation support of methods.
- Help system extensions for classes and methods.
- Automatic texinfo documentation generator.
- Several base classes for interesting tasks.
- Simple test suite.
- Public and private classifications for slots (extensions to
CLOS)
- Customization support in a class (extension to CLOS)
Here are some CLOS features that EIEIO presently
lacks:
- Complete
defclass tag support
-
All CLOS tags are currently supported, but the following are
not currently implemented correctly:
:metaclass
- There is only one base superclass for all EIEIO
classes, which is the
eieio-default-superclass.
:default-initargs
- Each slot has an
:initarg tag, so this is
not really necessary.
- Mock object initializers
- Each class contains a mock object used for fast
initialization of instantiated objects. Using functions with
side effects on object slot values can potentially cause
modifications in the mock object. EIEIO should use a
deep copy but currently does not.
:around method tag
- This CLOS method tag is non-functional.